package com.xxchat.service;

import java.util.List;

import com.xxchat.entity.dto.TokenUserInfoDTO;
import com.xxchat.entity.dto.UserContactSearchResultDTO;
import com.xxchat.entity.enums.UserContactStatusEnum;
import com.xxchat.entity.enums.UserContactTypeEnum;
import com.xxchat.entity.query.UserContactQuery;
import com.xxchat.entity.po.UserContact;
import com.xxchat.entity.vo.PaginationResultVO;

import javax.validation.constraints.NotEmpty;


/**
 * 联系人表 业务接口
 */
public interface UserContactService {

	/**
	 * 根据条件查询列表
	 */
	List<UserContact> findListByParam(UserContactQuery param);

	/**
	 * 根据条件查询列表
	 */
	Integer findCountByParam(UserContactQuery param);

	/**
	 * 分页查询
	 */
	PaginationResultVO<UserContact> findListByPage(UserContactQuery param);

	/**
	 * 新增
	 */
	Integer add(UserContact bean);

	/**
	 * 批量新增
	 */
	Integer addBatch(List<UserContact> listBean);

	/**
	 * 批量新增/修改
	 */
	Integer addOrUpdateBatch(List<UserContact> listBean);

	/**
	 * 多条件更新
	 */
	Integer updateByParam(UserContact bean,UserContactQuery param);

	/**
	 * 多条件删除
	 */
	Integer deleteByParam(UserContactQuery param);

	/**
	 * 根据ContactIdAndUserId查询对象
	 */
	UserContact getUserContactByContactIdAndUserId(String contactId,String userId);


	/**
	 * 根据ContactIdAndUserId修改
	 */
	Integer updateUserContactByContactIdAndUserId(UserContact bean,String contactId,String userId);


	/**
	 * 根据ContactIdAndUserId删除
	 */
	Integer deleteUserContactByContactIdAndUserId(String contactId,String userId);

	UserContactSearchResultDTO searchContact(String userId, String contactId);

    List<UserContact> loadContactList(TokenUserInfoDTO userInfoDTO, UserContactTypeEnum contactTypeEnum);

    void removeContact(String userId, String contactId, UserContactStatusEnum userContactStatusEnum);

	void addContact4Robot(String userId);
}